package com.cssy.yd.logic.util;

import java.math.BigDecimal;
import java.text.NumberFormat;

public class ToRmbUtil {
//		String[] han={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
//		String[] unit={"拾","佰","仟","万","亿"};
//		//定义一个字符串用来保存最后的结果
//		String res="";
//		public String[] divide(String str){
//			String[] s=new String[2];
//			if(str.contains(".")){
//				s=str.split("\\.");
//			}
//			else{
//				s[0]=str;
//			}
//			return s;
//		}
//		public String conversion(String[] s){
//			//先处理整数的前四位
//			String zheng=s[0];
//			String xiao=s[1];
//			int len1=0;
//			String res1="";
//			if(zheng.length()>8){
//				len1=zheng.length()-8;
//				for(int i=0;i<len1;i++){
//					int num=zheng.charAt(i)-48;
//					//if(num==0&&i!=len1-1) continue;
//					if(i==len1-1){
//						if(num==0){
//							res1+=unit[4];
//						}
//						else{
//							res1+=han[num]+unit[4];
//						}
//					}
//					else{
//						if(num==0&&(zheng.charAt(i+1)-48!=0)){
//							res1+=han[num];
//						}
//						if(num==0&&(zheng.charAt(i+1)-48==0)){
//							continue;
//						}
//						if(num!=0){
//							res1+=han[num]+unit[len1-2-i];
//						}
//					}
//				}
//			}
//			//再处理中间四位
//			int len2=0;
//			String res2="";
//			if(zheng.length()>4){
//				len2=zheng.length()-4-len1;
//				int numZero=0;
//				for(int i=len1;i<len1+len2;i++){
//					int num=zheng.charAt(i)-48;
//					if(num == 0 && i == len1)
//					{
//						numZero++;
//						continue;
//					}
//					if(num==0&&(zheng.charAt(i+1)-48!=0)&&i!=len1+len2-1){
//							res2+=han[num];
//					}
//					if(num==0&&(zheng.charAt(i+1)-48==0)&&(i!=len1+len2-1)){
//						numZero++;
//						continue;	
//					}
//					if(num==0&&numZero==(len2-1)&&i==len1+len2-1)
//					{
//						continue;
//					}
//					if(num==0&&i==len1+len2-1){
//						res2+=unit[3];
//					}
//					if(num!=0){
//						if(i==len1+len2-1){
//							res2+=han[num]+unit[3];
//						}
//						else{
//							res2+=han[num]+unit[len1+len2-2-i];//len1=1,len2=4 i从1到5
//						}
//					}
//				}
//			}
//			//最后处理最后四位
//			int len3=0;
//			String res3="";
//				len3=zheng.length()-len1-len2;
//				for(int i=len1+len2;i<zheng.length();i++){
//					int num=zheng.charAt(i)-48;
//					//if(num==0) continue;
//					if(i==zheng.length()-1){
//						if(num==0){
//							continue;
//						}
//						else{
//							res3+=han[num];
//						}
//					}
//					else{
//						if(num==0&&(zheng.charAt(i+1)-48!=0)){
//							res3+=han[num];
//						}
//						if(num==0&&(zheng.charAt(i+1)-48==0)){
//							continue;
//						}
//						if(num!=0){
//							res3+=han[num]+unit[len3+len1+len2-2-i];
//						}
//					}
//				}
//			//处理小数点后的数
//			String res4="";
//			if(xiao!=null){
//				for(int i=0;i<xiao.length();i++){
//					if(xiao.charAt(i)<=0){
//						
//					}
//					int numXiao=xiao.charAt(i)-48;
//					if(numXiao==0&&(xiao.charAt(i+1)-48!=0)){
//						res4+=han[numXiao];
//					}
//					if(numXiao==0&&(xiao.charAt(i+1)-48==0)){
//						continue;
//					}
//					if(numXiao!=0){
//						res4+=han[numXiao];
//					}
//				}
//				res=res1+res2+res3+"点"+res4;
//			}
//			else{
//				res=res1+res2+res3;
//			}
//			return res;
//		}
	public static String toChineseCharacter(double money) throws Exception {  
		      double temp = 0;  
		        long l = Math.abs((long) money);  
		       BigDecimal bil = new BigDecimal(l);  
		       if (bil.toString().length() > 14) {  
		            throw new Exception("数字太大，计算精度不够!");  
		       }  
		      NumberFormat nf = NumberFormat.getInstance();  
		        nf.setMaximumFractionDigits(2);  
		       int i = 0;  
	        String result = "", sign = "", tempStr = "", temp1 = "";  
	      String[] arr = null;  
		        sign = money < 0 ? "负" : "";  
		       temp = Math.abs(money);  
		        if (l == temp) {  
		            result = doForEach(new BigDecimal(temp).multiply(new BigDecimal(100)).toString(),  
		                    sign);  
		       } else {  
		            nf.setMaximumFractionDigits(2);  
		           temp1 = nf.format(temp);  
	            arr = temp1.split(",");  
	           while (i < arr.length) {  
		              tempStr += arr[i];  
		             i++;  
	           }  
		            BigDecimal b = new BigDecimal(tempStr);  
	           b = b.multiply(new BigDecimal(100));  
		           tempStr=b.toString();  
		           if(tempStr.indexOf(".")==tempStr.length()-3){  
		                result = doForEach(tempStr.substring(0,  
	                   tempStr.length() - 3), sign);  
		          }else{  
		              result = doForEach(tempStr.substring(0,  
		                        tempStr.length() - 3)+"0", sign);  
		            }  
		        }  
		        return result;  
		    }  
		 
		    /**  
		    *   
		    * @param result  
		     * @param sign  
		    * @return  
		     */  
		    public static String doForEach(String result, String sign) {  
	       String flag = "", b_string = "";  
		       String[] arr = { "分", "角", "圆", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿",  
	               "拾", "佰", "仟", "万", "拾" };  
		        String[] arr1 = { "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };  
		        boolean zero = true;  
		       int len = 0, i = 0, z_count = 0;  
		       if (result == null) {  
		            len = 0;  
		       } else {  
		            len = result.length();  
		        }  
		        while (i < len) {  
		            flag = result.substring(i, i + 1);  
		            i++;  
		            if (flag.equals("0")) {  
		                if (len - i == 10 || len - i == 6 || len - i == 2 || len == i) {  
		                    if (zero) {  
		                        b_string = b_string.substring(0,  
		                               (b_string.length()) - 1);  
		                       zero = false;  
		                    }  
		                    if (len - i == 10) {  
		                        b_string = b_string + "亿";  
		                    }  
		                    if (len - i == 6) {  
		                        b_string = b_string + "万";  
		                    }  
		                    if (len - i == 2) {  
		                        b_string = b_string + "圆";  
		                    }  
		                    if (len == i) {  
		                        b_string = b_string + "整";  
		                    }  
		                    z_count = 0;  
		                } else {  
		                    if (z_count == 0) {  
		                        b_string = b_string + "零";  
		                        zero = true;  
		                    }  
		                    z_count = z_count + 1;  
		                }  
		            } else {  
		                b_string = b_string + arr1[Integer.parseInt(flag) - 1]  
		                        + arr[len - i];  
		                z_count = 0;  
		                zero = false;  
		            }  
	        }  
		        b_string = sign + b_string;  
		     return b_string;  
		    }  

//		public static void main(String[] args){
//			double s=20888905.19902;
//			try {
//			} catch (Exception e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//		}
}
